package com.powernode.controller;

import com.powernode.common.Code;
import com.powernode.resp.Result;
import com.powernode.service.SmsService;
import com.powernode.util.CommonUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class SmsController {

    @Autowired
    private SmsService smsService;

    /**
     * @param phone 手机号码
     * @param cmd  操作码
     * @return
     */
    @GetMapping("/v1/sms/code")
    public Result sendMessage(String phone,String cmd){
        Result result = Result.FAILURE();
        /*1验证手机号码*/
        if (CommonUtil.checkPhone(phone)){
            /*2根据不同的操作码 发送不同的验证信息*/
            if ("reg".equals(cmd)||"login".equals(cmd)||"realname".equals(cmd)){

                /*3判断redis中是否存在对应的 验证码 如果有 则 不需要生成  没有才生成 防止 恶意访问*/
                boolean hasCode = smsService.checkCodeIsUse(phone,cmd);
                /*有验证码  返回提示*/
                if (hasCode){
                    result.setCodeEnum(Code.SMS_CODE_CANUSE);
                }else {
                   /*3根据 发送成功与否 返回不同的result */
                   boolean isSend = smsService.sendSmsCode(phone,cmd);
                   if (isSend){
                       result=Result.SUCCESS();
                   }
                   /*可以加一个短信发送失败的提示*/
                }
            }else {
                result.setCodeEnum(Code.QUERY_PARAM_ERROR);
            }
        }else {
            result.setCodeEnum(Code.PHONE_FORMAT_ERROR);
        }
        return result;
    }
}
